// vite.config.js
import { defineConfig } from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/vite@5.4.19_sass@1.89.1_terser@5.40.0/node_modules/vite/dist/node/index.js";
import vue from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/@vitejs+plugin-vue@4.6.2_vi_cf8bb870e1ed63b3d8e2bca9bfa275cf/node_modules/@vitejs/plugin-vue/dist/index.mjs";
import { resolve } from "path";
import legacy from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/@vitejs+plugin-legacy@5.4.3_7b4ba0276bed6134fbfff51984e7f135/node_modules/@vitejs/plugin-legacy/dist/index.mjs";
import fs from "fs";
import path from "path";
import UnoCSS from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/unocss@0.53.6_postcss@8.5.4_bcc93aaf95edfd3230200d86bd866f78/node_modules/unocss/dist/vite.mjs";
import presetUno from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/@unocss+preset-uno@0.53.6/node_modules/@unocss/preset-uno/dist/index.mjs";
import presetAttributify from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/@unocss+preset-attributify@0.53.6/node_modules/@unocss/preset-attributify/dist/index.mjs";
import presetIcons from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/@unocss+preset-icons@0.53.6/node_modules/@unocss/preset-icons/dist/index.mjs";
import transformerDirectives from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/@unocss+transformer-directives@0.53.6/node_modules/@unocss/transformer-directives/dist/index.mjs";
import { visualizer } from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/rollup-plugin-visualizer@6.0.1_rollup@4.41.1/node_modules/rollup-plugin-visualizer/dist/plugin/index.js";
import viteCompression from "file:///D:/janxl/workplace/NodeJS/ablaze_transform/ablaze-frontend-vite/node_modules/.pnpm/vite-plugin-compression@0.5_fd56504917877d372aaf66c778321626/node_modules/vite-plugin-compression/dist/index.mjs";
var __vite_injected_original_dirname = "D:\\janxl\\workplace\\NodeJS\\ablaze_transform\\ablaze-frontend-vite";
function handleImportPlugin() {
  const virtualModuleId = "virtual:fix-imports";
  const resolvedVirtualModuleId = "\0" + virtualModuleId;
  return {
    name: "vite-plugin-fix-imports",
    enforce: "pre",
    resolveId(id, importer) {
      if (id.startsWith("./") || id.startsWith("../")) {
        if (importer) {
          const importerDir = path.dirname(importer);
          const absolutePath = path.resolve(importerDir, id);
          const extensions = [".vue", ".js", ".jsx", ".ts", ".tsx"];
          for (const ext of extensions) {
            const pathWithExt = `${absolutePath}${ext}`;
            if (fs.existsSync(pathWithExt)) {
              return pathWithExt;
            }
            if (fs.existsSync(absolutePath) && fs.statSync(absolutePath).isDirectory()) {
              for (const indexExt of extensions) {
                const indexPath = path.join(absolutePath, `index${indexExt}`);
                if (fs.existsSync(indexPath)) {
                  return indexPath;
                }
              }
            }
          }
        }
      }
      return null;
    }
  };
}
var customManualChunks = (id) => {
};
var vite_config_default = defineConfig({
  plugins: [
    // 修复UnoCSS重复预设警告，确保只配置一次预设
    UnoCSS({
      presets: [
        presetUno(),
        presetAttributify(),
        presetIcons({
          scale: 1.2,
          warn: true
        })
      ],
      transformers: [
        transformerDirectives()
      ],
      shortcuts: [
        // 常用布局
        { "flex-center": "flex items-center justify-center" },
        { "flex-between": "flex items-center justify-between" },
        { "flex-col-center": "flex flex-col items-center justify-center" }
      ],
      theme: {
        colors: {
          // 可以添加自定义颜色
          primary: "var(--themeBackground)",
          secondary: "var(--greyFont)"
        }
      }
    }),
    handleImportPlugin(),
    vue({
      template: {
        compilerOptions: {
          // 处理一些Vue 2的语法兼容性
          compatConfig: {
            MODE: 2
          }
        }
      }
    }),
    legacy({
      targets: ["defaults", "not IE 11"]
    }),
    // 添加打包分析插件
    process.env.ANALYZE === "true" && visualizer({
      open: true,
      gzipSize: true,
      brotliSize: true
    }),
    // Gzip压缩
    viteCompression({
      verbose: true,
      disable: false,
      threshold: 10240,
      algorithm: "gzip",
      ext: ".gz"
    }),
    // Brotli压缩
    viteCompression({
      verbose: true,
      disable: false,
      threshold: 10240,
      algorithm: "brotliCompress",
      ext: ".br"
    })
  ].filter(Boolean),
  // 过滤掉可能的undefined值
  resolve: {
    alias: {
      "@": resolve(__vite_injected_original_dirname, "src")
    },
    extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"]
  },
  build: {
    // 启用CSS代码分割
    cssCodeSplit: true,
    // 启用源码映射
    sourcemap: false,
    // 压缩选项
    minify: "terser",
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true
      }
    },
    // 设置块大小警告的限制
    chunkSizeWarningLimit: 800,
    rollupOptions: {
      output: {
        // 使用自定义函数进行代码分块
        manualChunks: customManualChunks,
        // 优化静态资源
        assetFileNames: (assetInfo) => {
          const info = assetInfo.name.split(".");
          let extType = info[info.length - 1];
          if (/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/i.test(assetInfo.name)) {
            extType = "media";
          } else if (/\.(png|jpe?g|gif|svg|ico|webp)(\?.*)?$/i.test(assetInfo.name)) {
            extType = "img";
          } else if (/\.(woff2?|eot|ttf|otf)(\?.*)?$/i.test(assetInfo.name)) {
            extType = "fonts";
          }
          return `assets/${extType}/[name]-[hash][extname]`;
        },
        // 入口文件与代码分块
        chunkFileNames: "assets/js/[name]-[hash].js",
        entryFileNames: "assets/js/[name]-[hash].js"
      }
    },
    commonjsOptions: {
      transformMixedEsModules: true
    }
  },
  optimizeDeps: {
    include: ["vue", "vue-router", "pinia", "axios", "element-plus", "md-editor-v3"],
    // 排除不需要预构建的依赖
    exclude: ["vue-demi"]
  },
  // base: process.env.NODE_ENV === "production" ? "https://cos.roginx.ink/www/index" : "/",
  base: "/",
  // 开启gzip压缩
  server: {
    host: "127.0.0.1",
    port: 9e3,
    proxy: {
      "/agent": {
        target: "https://www.roginx.ink/agent",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/agent/, "")
      },
      "/baseagent": {
        target: "http://127.0.0.1:8085/",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/baseagent/, "")
      },
      "/getIp": {
        target: "http://ip-api.com/json/?lang=zh-CN",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/getIp/, "")
      },
      "/api/alist": {
        target: "https://alist.roginx.ink/api/",
        changeOrigin: true,
        headers: {
          Host: "alist.roginx.ink",
          Authorization: ""
        },
        rewrite: (path2) => path2.replace(/^\/api\/alist/, "/")
      },
      "/api/netapi": {
        target: "https://www.roginx.ink/api/",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/api/, "")
      },
      "/api/scrape": {
        target: "http://service-pjors7ji-1257251314.hk.apigw.tencentcs.com/",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/api\/scrape/, "/puppeteer"),
        configure: (proxy, options) => {
          proxy.on("error", (err, req, res) => {
            console.log("proxy error", err);
            res.writeHead(500, {
              "Content-Type": "text/plain"
            });
            res.end("\u4EE3\u7406\u8BF7\u6C42\u51FA\u9519: " + err.message);
          });
        },
        timeout: 6e4
      },
      "/api/aurora": {
        target: "http://aurora.roginx.ink/aurora/",
        changeOrigin: true,
        headers: {
          Host: "aurora.roginx.ink"
        },
        rewrite: (path2) => path2.replace(/^\/api\/aurora/, "")
      },
      "/api": {
        target: "https://www.roginx.ink/api/",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/api/, "/")
      },
      "/mapi163/weapi": {
        target: "http://music.163.com/weapi/",
        rewrite: (path2) => path2.replace(/^\/mapi163\/weapi/, "/")
      }
    }
  }
});
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxqYW54bFxcXFx3b3JrcGxhY2VcXFxcTm9kZUpTXFxcXGFibGF6ZV90cmFuc2Zvcm1cXFxcYWJsYXplLWZyb250ZW5kLXZpdGVcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXGphbnhsXFxcXHdvcmtwbGFjZVxcXFxOb2RlSlNcXFxcYWJsYXplX3RyYW5zZm9ybVxcXFxhYmxhemUtZnJvbnRlbmQtdml0ZVxcXFx2aXRlLmNvbmZpZy5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovamFueGwvd29ya3BsYWNlL05vZGVKUy9hYmxhemVfdHJhbnNmb3JtL2FibGF6ZS1mcm9udGVuZC12aXRlL3ZpdGUuY29uZmlnLmpzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZSdcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGgnXG5pbXBvcnQgbGVnYWN5IGZyb20gJ0B2aXRlanMvcGx1Z2luLWxlZ2FjeSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgVW5vQ1NTIGZyb20gJ3Vub2Nzcy92aXRlJ1xuaW1wb3J0IHByZXNldFVubyBmcm9tICdAdW5vY3NzL3ByZXNldC11bm8nXG5pbXBvcnQgcHJlc2V0QXR0cmlidXRpZnkgZnJvbSAnQHVub2Nzcy9wcmVzZXQtYXR0cmlidXRpZnknXG5pbXBvcnQgcHJlc2V0SWNvbnMgZnJvbSAnQHVub2Nzcy9wcmVzZXQtaWNvbnMnXG5pbXBvcnQgdHJhbnNmb3JtZXJEaXJlY3RpdmVzIGZyb20gJ0B1bm9jc3MvdHJhbnNmb3JtZXItZGlyZWN0aXZlcydcbmltcG9ydCB7IHZpc3VhbGl6ZXIgfSBmcm9tICdyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXInXG5pbXBvcnQgdml0ZUNvbXByZXNzaW9uIGZyb20gJ3ZpdGUtcGx1Z2luLWNvbXByZXNzaW9uJ1xuXG4vLyBcdTgxRUFcdTVCOUFcdTRFNDlcdTYzRDJcdTRFRjZcdUZGMENcdTU5MDRcdTc0MDZcdTUyQThcdTYwMDFcdTVCRkNcdTUxNjVcdTk1RUVcdTk4OThcbmZ1bmN0aW9uIGhhbmRsZUltcG9ydFBsdWdpbigpIHtcbiAgY29uc3QgdmlydHVhbE1vZHVsZUlkID0gJ3ZpcnR1YWw6Zml4LWltcG9ydHMnXG4gIGNvbnN0IHJlc29sdmVkVmlydHVhbE1vZHVsZUlkID0gJ1xcMCcgKyB2aXJ0dWFsTW9kdWxlSWRcbiAgXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3ZpdGUtcGx1Z2luLWZpeC1pbXBvcnRzJyxcbiAgICBlbmZvcmNlOiAncHJlJyxcbiAgICByZXNvbHZlSWQoaWQsIGltcG9ydGVyKSB7XG4gICAgICAvLyBcdTU5MDRcdTc0MDZcdTc2RjhcdTVCRjlcdThERUZcdTVGODRcdTVCRkNcdTUxNjVcdUZGMENcdTY4QzBcdTY3RTVcdTY2MkZcdTU0MjZcdTk3MDBcdTg5ODFcdTZERkJcdTUyQTBcdTYyNjlcdTVDNTVcdTU0MERcbiAgICAgIGlmIChpZC5zdGFydHNXaXRoKCcuLycpIHx8IGlkLnN0YXJ0c1dpdGgoJy4uLycpKSB7XG4gICAgICAgIGlmIChpbXBvcnRlcikge1xuICAgICAgICAgIGNvbnN0IGltcG9ydGVyRGlyID0gcGF0aC5kaXJuYW1lKGltcG9ydGVyKVxuICAgICAgICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGgucmVzb2x2ZShpbXBvcnRlckRpciwgaWQpXG4gICAgICAgICAgXG4gICAgICAgICAgLy8gXHU1QzFEXHU4QkQ1XHU0RTBEXHU1NDBDXHU3Njg0XHU2MjY5XHU1QzU1XHU1NDBEXG4gICAgICAgICAgY29uc3QgZXh0ZW5zaW9ucyA9IFsnLnZ1ZScsICcuanMnLCAnLmpzeCcsICcudHMnLCAnLnRzeCddXG4gICAgICAgICAgZm9yIChjb25zdCBleHQgb2YgZXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgY29uc3QgcGF0aFdpdGhFeHQgPSBgJHthYnNvbHV0ZVBhdGh9JHtleHR9YFxuICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aFdpdGhFeHQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBwYXRoV2l0aEV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBcdTY4QzBcdTY3RTVcdTY2MkZcdTU0MjZcdTY2MkZcdTc2RUVcdTVGNTVcdUZGMENcdTU5ODJcdTY3OUNcdTY2MkZcdUZGMENcdTVDMURcdThCRDVpbmRleFx1NjU4N1x1NEVGNlxuICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoYWJzb2x1dGVQYXRoKSAmJiBmcy5zdGF0U3luYyhhYnNvbHV0ZVBhdGgpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBpbmRleEV4dCBvZiBleHRlbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhQYXRoID0gcGF0aC5qb2luKGFic29sdXRlUGF0aCwgYGluZGV4JHtpbmRleEV4dH1gKVxuICAgICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGluZGV4UGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleFBhdGhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG59XG5cbi8vIFx1ODFFQVx1NUI5QVx1NEU0OVx1NTIwNlx1NTc1N1x1N0I1Nlx1NzU2NVxuY29uc3QgY3VzdG9tTWFudWFsQ2h1bmtzID0gKGlkKSA9PiB7XG4gIFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcGx1Z2luczogW1xuICAgIC8vIFx1NEZFRVx1NTkwRFVub0NTU1x1OTFDRFx1NTkwRFx1OTg4NFx1OEJCRVx1OEI2Nlx1NTQ0QVx1RkYwQ1x1Nzg2RVx1NEZERFx1NTNFQVx1OTE0RFx1N0Y2RVx1NEUwMFx1NkIyMVx1OTg4NFx1OEJCRVxuICAgIFVub0NTUyh7XG4gICAgICBwcmVzZXRzOiBbXG4gICAgICAgIHByZXNldFVubygpLCBcbiAgICAgICAgcHJlc2V0QXR0cmlidXRpZnkoKSxcbiAgICAgICAgcHJlc2V0SWNvbnMoe1xuICAgICAgICAgIHNjYWxlOiAxLjIsXG4gICAgICAgICAgd2FybjogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIF0sXG4gICAgICB0cmFuc2Zvcm1lcnM6IFtcbiAgICAgICAgdHJhbnNmb3JtZXJEaXJlY3RpdmVzKClcbiAgICAgIF0sXG4gICAgICBzaG9ydGN1dHM6IFtcbiAgICAgICAgLy8gXHU1RTM4XHU3NTI4XHU1RTAzXHU1QzQwXG4gICAgICAgIHsgJ2ZsZXgtY2VudGVyJzogJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJyB9LFxuICAgICAgICB7ICdmbGV4LWJldHdlZW4nOiAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuJyB9LFxuICAgICAgICB7ICdmbGV4LWNvbC1jZW50ZXInOiAnZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInIH0sXG4gICAgICBdLFxuICAgICAgdGhlbWU6IHtcbiAgICAgICAgY29sb3JzOiB7XG4gICAgICAgICAgLy8gXHU1M0VGXHU0RUU1XHU2REZCXHU1MkEwXHU4MUVBXHU1QjlBXHU0RTQ5XHU5ODlDXHU4MjcyXG4gICAgICAgICAgcHJpbWFyeTogJ3ZhcigtLXRoZW1lQmFja2dyb3VuZCknLFxuICAgICAgICAgIHNlY29uZGFyeTogJ3ZhcigtLWdyZXlGb250KScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pLFxuICAgIGhhbmRsZUltcG9ydFBsdWdpbigpLFxuICAgIHZ1ZSh7XG4gICAgICB0ZW1wbGF0ZToge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAvLyBcdTU5MDRcdTc0MDZcdTRFMDBcdTRFOUJWdWUgMlx1NzY4NFx1OEJFRFx1NkNENVx1NTE3Q1x1NUJCOVx1NjAyN1xuICAgICAgICAgIGNvbXBhdENvbmZpZzoge1xuICAgICAgICAgICAgTU9ERTogMlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pLFxuICAgIGxlZ2FjeSh7XG4gICAgICB0YXJnZXRzOiBbJ2RlZmF1bHRzJywgJ25vdCBJRSAxMSddXG4gICAgfSksXG4gICAgLy8gXHU2REZCXHU1MkEwXHU2MjUzXHU1MzA1XHU1MjA2XHU2NzkwXHU2M0QyXHU0RUY2XG4gICAgcHJvY2Vzcy5lbnYuQU5BTFlaRSA9PT0gJ3RydWUnICYmIHZpc3VhbGl6ZXIoe1xuICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgIGd6aXBTaXplOiB0cnVlLFxuICAgICAgYnJvdGxpU2l6ZTogdHJ1ZSxcbiAgICB9KSxcbiAgICAvLyBHemlwXHU1MzhCXHU3RjI5XG4gICAgdml0ZUNvbXByZXNzaW9uKHtcbiAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgIHRocmVzaG9sZDogMTAyNDAsXG4gICAgICBhbGdvcml0aG06ICdnemlwJyxcbiAgICAgIGV4dDogJy5neicsXG4gICAgfSksXG4gICAgLy8gQnJvdGxpXHU1MzhCXHU3RjI5XG4gICAgdml0ZUNvbXByZXNzaW9uKHtcbiAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgIHRocmVzaG9sZDogMTAyNDAsXG4gICAgICBhbGdvcml0aG06ICdicm90bGlDb21wcmVzcycsXG4gICAgICBleHQ6ICcuYnInLFxuICAgIH0pLFxuICBdLmZpbHRlcihCb29sZWFuKSwgLy8gXHU4RkM3XHU2RUU0XHU2Mzg5XHU1M0VGXHU4MEZEXHU3Njg0dW5kZWZpbmVkXHU1MDNDXG4gIHJlc29sdmU6IHtcbiAgICBhbGlhczoge1xuICAgICAgJ0AnOiByZXNvbHZlKF9fZGlybmFtZSwgJ3NyYycpXG4gICAgfSxcbiAgICBleHRlbnNpb25zOiBbJy5tanMnLCAnLmpzJywgJy50cycsICcuanN4JywgJy50c3gnLCAnLmpzb24nLCAnLnZ1ZSddXG4gIH0sXG4gIGJ1aWxkOiB7XG4gICAgLy8gXHU1NDJGXHU3NTI4Q1NTXHU0RUUzXHU3ODAxXHU1MjA2XHU1MjcyXG4gICAgY3NzQ29kZVNwbGl0OiB0cnVlLFxuICAgIC8vIFx1NTQyRlx1NzUyOFx1NkU5MFx1NzgwMVx1NjYyMFx1NUMwNFxuICAgIHNvdXJjZW1hcDogZmFsc2UsXG4gICAgLy8gXHU1MzhCXHU3RjI5XHU5MDA5XHU5ODc5XG4gICAgbWluaWZ5OiAndGVyc2VyJyxcbiAgICB0ZXJzZXJPcHRpb25zOiB7XG4gICAgICBjb21wcmVzczoge1xuICAgICAgICBkcm9wX2NvbnNvbGU6IHRydWUsXG4gICAgICAgIGRyb3BfZGVidWdnZXI6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgLy8gXHU4QkJFXHU3RjZFXHU1NzU3XHU1OTI3XHU1QzBGXHU4QjY2XHU1NDRBXHU3Njg0XHU5NjUwXHU1MjM2XG4gICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiA4MDAsXG4gICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgb3V0cHV0OiB7XG4gICAgICAgIC8vIFx1NEY3Rlx1NzUyOFx1ODFFQVx1NUI5QVx1NEU0OVx1NTFGRFx1NjU3MFx1OEZEQlx1ODg0Q1x1NEVFM1x1NzgwMVx1NTIwNlx1NTc1N1xuICAgICAgICBtYW51YWxDaHVua3M6IGN1c3RvbU1hbnVhbENodW5rcyxcbiAgICAgICAgLy8gXHU0RjE4XHU1MzE2XHU5NzU5XHU2MDAxXHU4RDQ0XHU2RTkwXG4gICAgICAgIGFzc2V0RmlsZU5hbWVzOiAoYXNzZXRJbmZvKSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5mbyA9IGFzc2V0SW5mby5uYW1lLnNwbGl0KCcuJylcbiAgICAgICAgICBsZXQgZXh0VHlwZSA9IGluZm9baW5mby5sZW5ndGggLSAxXVxuICAgICAgICAgIGlmICgvXFwuKG1wNHx3ZWJtfG9nZ3xtcDN8d2F2fGZsYWN8YWFjKShcXD8uKik/JC9pLnRlc3QoYXNzZXRJbmZvLm5hbWUpKSB7XG4gICAgICAgICAgICBleHRUeXBlID0gJ21lZGlhJ1xuICAgICAgICAgIH0gZWxzZSBpZiAoL1xcLihwbmd8anBlP2d8Z2lmfHN2Z3xpY298d2VicCkoXFw/LiopPyQvaS50ZXN0KGFzc2V0SW5mby5uYW1lKSkge1xuICAgICAgICAgICAgZXh0VHlwZSA9ICdpbWcnXG4gICAgICAgICAgfSBlbHNlIGlmICgvXFwuKHdvZmYyP3xlb3R8dHRmfG90ZikoXFw/LiopPyQvaS50ZXN0KGFzc2V0SW5mby5uYW1lKSkge1xuICAgICAgICAgICAgZXh0VHlwZSA9ICdmb250cydcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGBhc3NldHMvJHtleHRUeXBlfS9bbmFtZV0tW2hhc2hdW2V4dG5hbWVdYFxuICAgICAgICB9LFxuICAgICAgICAvLyBcdTUxNjVcdTUzRTNcdTY1ODdcdTRFRjZcdTRFMEVcdTRFRTNcdTc4MDFcdTUyMDZcdTU3NTdcbiAgICAgICAgY2h1bmtGaWxlTmFtZXM6ICdhc3NldHMvanMvW25hbWVdLVtoYXNoXS5qcycsXG4gICAgICAgIGVudHJ5RmlsZU5hbWVzOiAnYXNzZXRzL2pzL1tuYW1lXS1baGFzaF0uanMnLFxuICAgICAgfVxuICAgIH0sXG4gICAgY29tbW9uanNPcHRpb25zOiB7XG4gICAgICB0cmFuc2Zvcm1NaXhlZEVzTW9kdWxlczogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgb3B0aW1pemVEZXBzOiB7XG4gICAgaW5jbHVkZTogWyd2dWUnLCAndnVlLXJvdXRlcicsICdwaW5pYScsICdheGlvcycsICdlbGVtZW50LXBsdXMnLCAnbWQtZWRpdG9yLXYzJ10sXG4gICAgLy8gXHU2MzkyXHU5NjY0XHU0RTBEXHU5NzAwXHU4OTgxXHU5ODg0XHU2Nzg0XHU1RUZBXHU3Njg0XHU0RjlEXHU4RDU2XG4gICAgZXhjbHVkZTogWyd2dWUtZGVtaSddXG4gIH0sXG4gIC8vIGJhc2U6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiaHR0cHM6Ly9jb3Mucm9naW54Lmluay93d3cvaW5kZXhcIiA6IFwiL1wiLFxuICBiYXNlOiBcIi9cIixcbiAgLy8gXHU1RjAwXHU1NDJGZ3ppcFx1NTM4Qlx1N0YyOVxuICBzZXJ2ZXI6IHtcbiAgICBob3N0OiAnMTI3LjAuMC4xJyxcbiAgICBwb3J0OiA5MDAwLFxuICAgIHByb3h5OiB7XG4gICAgICAnL2FnZW50Jzoge1xuICAgICAgICB0YXJnZXQ6ICdodHRwczovL3d3dy5yb2dpbnguaW5rL2FnZW50JyxcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvYWdlbnQvLCAnJylcbiAgICAgIH0sXG4gICAgICAnL2Jhc2VhZ2VudCc6IHtcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEyNy4wLjAuMTo4MDg1LycsXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2Jhc2VhZ2VudC8sICcnKVxuICAgICAgfSxcbiAgICAgICcvZ2V0SXAnOiB7XG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly9pcC1hcGkuY29tL2pzb24vP2xhbmc9emgtQ04nLFxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9nZXRJcC8sICcnKVxuICAgICAgfSxcbiAgICAgICcvYXBpL2FsaXN0Jzoge1xuICAgICAgICB0YXJnZXQ6ICdodHRwczovL2FsaXN0LnJvZ2lueC5pbmsvYXBpLycsXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEhvc3Q6ICdhbGlzdC5yb2dpbnguaW5rJyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiAnJ1xuICAgICAgICB9LFxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvYXBpXFwvYWxpc3QvLCAnLycpXG4gICAgICB9LFxuICAgICAgJy9hcGkvbmV0YXBpJzoge1xuICAgICAgICB0YXJnZXQ6ICdodHRwczovL3d3dy5yb2dpbnguaW5rL2FwaS8nLFxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9hcGkvLCAnJylcbiAgICAgIH0sXG4gICAgICAnL2FwaS9zY3JhcGUnOiB7XG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly9zZXJ2aWNlLXBqb3JzN2ppLTEyNTcyNTEzMTQuaGsuYXBpZ3cudGVuY2VudGNzLmNvbS8nLFxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9hcGlcXC9zY3JhcGUvLCAnL3B1cHBldGVlcicpLFxuICAgICAgICBjb25maWd1cmU6IChwcm94eSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIHByb3h5Lm9uKCdlcnJvcicsIChlcnIsIHJlcSwgcmVzKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncHJveHkgZXJyb3InLCBlcnIpO1xuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCg1MDAsIHtcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzLmVuZCgnXHU0RUUzXHU3NDA2XHU4QkY3XHU2QzQyXHU1MUZBXHU5NTE5OiAnICsgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0aW1lb3V0OiA2MDAwMCxcbiAgICAgIH0sXG4gICAgICAnL2FwaS9hdXJvcmEnOiB7XG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly9hdXJvcmEucm9naW54Lmluay9hdXJvcmEvJyxcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgSG9zdDogJ2F1cm9yYS5yb2dpbnguaW5rJ1xuICAgICAgICB9LFxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvYXBpXFwvYXVyb3JhLywgJycpXG4gICAgICB9LFxuICAgICAgJy9hcGknOiB7XG4gICAgICAgIHRhcmdldDogJ2h0dHBzOi8vd3d3LnJvZ2lueC5pbmsvYXBpLycsXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2FwaS8sICcvJylcbiAgICAgIH0sXG4gICAgICAnL21hcGkxNjMvd2VhcGknOiB7XG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly9tdXNpYy4xNjMuY29tL3dlYXBpLycsXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9tYXBpMTYzXFwvd2VhcGkvLCAnLycpXG4gICAgICB9XG4gICAgfVxuICB9XG59KSAiXSwKICAibWFwcGluZ3MiOiAiO0FBQTJYLFNBQVMsb0JBQW9CO0FBQ3haLE9BQU8sU0FBUztBQUNoQixTQUFTLGVBQWU7QUFDeEIsT0FBTyxZQUFZO0FBQ25CLE9BQU8sUUFBUTtBQUNmLE9BQU8sVUFBVTtBQUNqQixPQUFPLFlBQVk7QUFDbkIsT0FBTyxlQUFlO0FBQ3RCLE9BQU8sdUJBQXVCO0FBQzlCLE9BQU8saUJBQWlCO0FBQ3hCLE9BQU8sMkJBQTJCO0FBQ2xDLFNBQVMsa0JBQWtCO0FBQzNCLE9BQU8scUJBQXFCO0FBWjVCLElBQU0sbUNBQW1DO0FBZXpDLFNBQVMs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
